package com.jctrip.hotel.source.service.CNBooking;

import java.util.List;

import com.jctrip.hotel.source.model.CnBooking.CityDataDTO;
import com.jctrip.hotel.source.model.CnBooking.IdentityInfoDTO;
import com.jctrip.hotel.source.model.CnBooking.req.BookingReq;
import com.jctrip.hotel.source.model.CnBooking.req.CNBEPostOrderReq;
import com.jctrip.hotel.source.model.CnBooking.resp.BookingResp.BookingOrderData;
import com.jctrip.hotel.source.model.CnBooking.resp.OrderSearchResp;
import com.jctrip.hotel.source.model.CnBooking.resp.QueryHotelResp.HotelsData;
import com.jctrip.hotel.source.model.CnBooking.resp.QueryRoomStatusResp.RoomStatusHotel;
import com.jctrip.hotel.source.model.CnBooking.resp.QueryRoomTypeResp.RoomTypeData;
import com.jctrip.hotel.source.model.CnBooking.resp.ValiadRoomStatusResp;
import com.jctrip.hotel.source.model.OrderDataResult;
import com.jctrip.hotel.source.model.PriceCheckParam;
import com.jctrip.hotel.source.model.wehotel.req.OrderData;

/**
 * @Author henry
 * @Date 2023/7/2 14:57
 * @Description
 */
public interface CNBookingService {
    String parseHotelId(String innId);

    String parseInnId(String hotelId);

    String parseAbroadHotelId(String innId);

    String parseAbroadInnId(String hotelId);

    List<CityDataDTO> getCityData(IdentityInfoDTO infoDTO);

    HotelsData queryHotel(String countryId, String provinceId, String cityId, String lang, Integer current,
            Integer pageSize, String hotelId, IdentityInfoDTO infoDTO);

    RoomTypeData queryRoomType(String countryId, String hotelId, String lang, IdentityInfoDTO infoDTO);

    ValiadRoomStatusResp.ValiadRoomStatusInfo valiadRoomstatus(String hotelId, String roomId, String rateplanId, String roomCount,
            String checkIn, String checkOut,String currency,String orderAmount, IdentityInfoDTO infoDTO);

    RoomStatusHotel queryRoomStatus(String countryId, String currency, String hotelId, String roomId, String RatePlanId,
            String start, String end,
            IdentityInfoDTO infoDTO);

    BookingOrderData booking(BookingReq req);

    OrderDataResult postOrder(CNBEPostOrderReq req, IdentityInfoDTO infoDTO, PriceCheckParam priceCheck);

    /**
     * @param orderId cnbe 订单编号
     * @param outOrderNo jc  bookid
     */
    OrderData queryOrder(IdentityInfoDTO infoDTO, String orderId, String outOrderNo);

    OrderSearchResp.QueryOrderData queryCNBEOrder(String sourceId, String orderId, String outOrderNo);

    void cancelOrder(IdentityInfoDTO infoDTO, String orderId);


}
